From: Carlos Garnacho Date: Wed, 5 Nov 2025 12:26:40 +0000 (+0100) Subject: st: Set I-beam cursor on StEntry through Clutter API X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~39^2~1^2~71 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=209323fee8347d76dcf713b99b81d13de90ac9ec;p=gnome-shell.git st: Set I-beam cursor on StEntry through Clutter API This also means we can drop the special shell hooks to actually set a cursor with MetaDisplay API. Part-of: --- diff --git a/src/shell-global.c b/src/shell-global.c index 95f4f3679..4291bb94f 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -955,17 +955,6 @@ ui_scaling_factor_changed (MetaSettings *settings, update_scaling_factor (global, settings); } -static void -entry_cursor_func (StEntry *entry, - gboolean use_ibeam, - gpointer user_data) -{ - ShellGlobal *global = user_data; - - meta_display_set_cursor (global->meta_display, - use_ibeam ? META_CURSOR_TEXT : META_CURSOR_DEFAULT); -} - #ifdef HAVE_XWAYLAND static void on_x11_display_closed (MetaDisplay *display, @@ -1004,7 +993,6 @@ _shell_global_set_plugin (ShellGlobal *global, global->stage = CLUTTER_STAGE (meta_backend_get_stage (global->backend)); - st_entry_set_cursor_func (entry_cursor_func, global); st_clipboard_set_selection (meta_display_get_selection (display)); g_signal_connect (global->stage, "notify::width", diff --git a/src/st/st-entry.c b/src/st/st-entry.c index e3a4b537f..25e179bfe 100644 --- a/src/st/st-entry.c +++ b/src/st/st-entry.c @@ -103,8 +103,6 @@ struct _StEntryPrivate gfloat spacing; - gboolean has_ibeam; - StShadow *shadow_spec; CoglPipeline *text_shadow_pipeline; @@ -776,60 +774,6 @@ st_entry_key_focus_in (ClutterActor *actor) clutter_actor_grab_key_focus (priv->entry); } -static StEntryCursorFunc cursor_func = NULL; -static gpointer cursor_func_data = NULL; - -/** - * st_entry_set_cursor_func: (skip) - * - * This function is for private use by libgnome-shell. - * Do not ever use. - */ -void -st_entry_set_cursor_func (StEntryCursorFunc func, - gpointer data) -{ - cursor_func = func; - cursor_func_data = data; -} - -static void -st_entry_set_cursor (StEntry *entry, - gboolean use_ibeam) -{ - if (cursor_func) - cursor_func (entry, use_ibeam, cursor_func_data); - - ((StEntryPrivate *)ST_ENTRY_PRIV (entry))->has_ibeam = use_ibeam; -} - -static gboolean -st_entry_enter_event (ClutterActor *actor, - ClutterEvent *event) -{ - StEntryPrivate *priv = ST_ENTRY_PRIV (actor); - ClutterStage *stage; - ClutterActor *target; - - stage = CLUTTER_STAGE (clutter_actor_get_stage (actor)); - target = clutter_stage_get_event_actor (stage, event); - - if (target == priv->entry && - clutter_event_get_related (event) != NULL) - st_entry_set_cursor (ST_ENTRY (actor), TRUE); - - return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->enter_event (actor, event); -} - -static gboolean -st_entry_leave_event (ClutterActor *actor, - ClutterEvent *event) -{ - st_entry_set_cursor (ST_ENTRY (actor), FALSE); - - return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->leave_event (actor, event); -} - static void st_entry_paint_node (ClutterActor *actor, ClutterPaintNode *node, @@ -875,16 +819,6 @@ st_entry_paint_node (ClutterActor *actor, } } -static void -st_entry_unmap (ClutterActor *actor) -{ - StEntryPrivate *priv = ST_ENTRY_PRIV (actor); - if (priv->has_ibeam) - st_entry_set_cursor (ST_ENTRY (actor), FALSE); - - CLUTTER_ACTOR_CLASS (st_entry_parent_class)->unmap (actor); -} - static gboolean st_entry_get_paint_volume (ClutterActor *actor, ClutterPaintVolume *volume) @@ -908,15 +842,11 @@ st_entry_class_init (StEntryClass *klass) actor_class->get_preferred_height = st_entry_get_preferred_height; actor_class->allocate = st_entry_allocate; actor_class->paint_node = st_entry_paint_node; - actor_class->unmap = st_entry_unmap; actor_class->get_paint_volume = st_entry_get_paint_volume; actor_class->key_press_event = st_entry_key_press_event; actor_class->key_focus_in = st_entry_key_focus_in; - actor_class->enter_event = st_entry_enter_event; - actor_class->leave_event = st_entry_leave_event; - widget_class->style_changed = st_entry_style_changed; widget_class->navigate_focus = st_entry_navigate_focus; @@ -1103,6 +1033,8 @@ st_entry_init (StEntry *entry) /* set cursor hidden until we receive focus */ clutter_text_set_cursor_visible ((ClutterText *) priv->entry, FALSE); + + clutter_actor_set_cursor_type (CLUTTER_ACTOR (entry), CLUTTER_CURSOR_TEXT); } /** diff --git a/src/st/st-entry.h b/src/st/st-entry.h index b62749082..eb24942b4 100644 --- a/src/st/st-entry.h +++ b/src/st/st-entry.h @@ -69,9 +69,4 @@ void st_entry_set_hint_actor (StEntry *entry, ClutterActor *hint_actor); ClutterActor * st_entry_get_hint_actor (StEntry *entry); -typedef void (*StEntryCursorFunc) (StEntry *entry, gboolean use_ibeam, gpointer data); -void st_entry_set_cursor_func (StEntryCursorFunc func, - gpointer user_data); - G_END_DECLS -